﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using UniCT.LinkShareWpf.Model;

namespace UniCT.LinkShareWpf.Interface
{
    // L'interfaccia che contiene  i metodi che dovranno essere implementati dalla parte Server del nodo.

    // Marchiamo l'interfaccia come contratto
    [ServiceContract]
    public interface IContract
    {

        // Marchiamo la funzione come operazione del servizio.
        // L'attributo IsOneWay configura la direzione della comunicazione:
        // Con il valore true, il metodo non restituisce alcun messaggio
        [OperationContract(IsOneWay = false)]
        long Ping(long x);

        [OperationContract(IsOneWay = true)]
        void SearchRequest(NetFilter netFilter);

        // Quando il nodo che ha la risorsa non è collegato direttamente al nodo, la parte client crea la connessione con il nodo
        // richiedente ( cortocircuito) e dopo di che manda la risorsa
        [OperationContract(IsOneWay = true)]
        void SendResource(NetResource netResource);

    }

}
